using System.Threading.Tasks;
using JNPF.Utils;
using System.Collections.Generic;
using JNPF.Basics.Models;

namespace JNPF.Basics.Logic
{
    public interface CustomerloandetailIService
    {
        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="id">主键id</param>
        /// <returns></returns>
        Task<CustomerloandetailEntity> GetInfo(int id);

        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="id">主键id</param>
        /// <returns></returns>
        Task<CustomerloandetailEntity> GetInfoByUUID(string uuid);


        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="serialid">serialid</param>
        /// <returns></returns>
        Task<CustomerloandetailEntity> GetInfoBySerialid(string serialid);


        /// <summary>
        /// 列表(分页)
        /// </summary>
        /// <param name="input">请求参数</param>
        /// <returns></returns>
        Task<PageResult<CustomerloandetailEntity>> GetPageList(CustomerloandetailListQueryInput input);


        /// <summary>
        /// 列表（分页）
        /// </summary>
        /// <param name="input">请求参数</param>
        /// <returns></returns>
        Task<PageResult<CustomerloandetailListOutput>> GetPageListByCus(CustomerloandetailListQueryInput input);


        /// <summary>
        /// 企业用户  ===  手机号码对应起来的 
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PageResult<CustomerloandetailListOutput>> GetBusPageList(CustomerloandetailListQueryInput input);


        /// <summary>
        /// 客户经理列表（分页）
        /// </summary>
        /// <param name="input">请求参数</param>
        /// <returns></returns>
        Task<PageResult<CustomerloandetailListOutput>> GetCuseBusList(CustomerloandetailListQueryInput input);


        /// <summary>
        /// 信贷管家   列表（分页）
        /// </summary>
        /// <param name="input">请求参数</param>
        /// <returns></returns>
        Task<PageResult<CustomerloandetailListOutput>> GetPagCuseList(CustomerloandetailListQueryInput input);


        /// <summary>
        /// 列表(分页)
        /// </summary>
        /// <param name="input">请求参数</param>
        /// <returns></returns>
        Task<PageResult<CustomerloandetailEntity>> GetPageListBySql(CustomerloandetailListQueryInput input);

        /// <summary>
        /// 列表（分页）
        /// </summary>
        /// <param name="needDetailId">需求Id</param>
        /// <returns></returns>
        Task<List<CustomerloandetailListOutputNew>> GetDetialByneedDetailId(int needDetailId);



        /// <summary>
        /// 列表（分页）
        /// </summary>
        /// <param name="customerLoanUUID">请求参数</param>
        /// <returns></returns>
        Task<List<CustomerloandetailEntity>> GetList(string customerLoanUUID);




        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <returns></returns>
        Task<int> Create(CustomerloandetailEntity entity);

        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <returns></returns>
        Task Create(CustomerloandetailEntity entity, CustomerloanEntity customerloanEntity, CustomerloandetailEntity customerloandetailEntity);

        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <returns></returns>
        Task Create(CustomerloandetailEntity entity, List<PointsdetailsEntity> pointsdetailsEntities, List<UserextendEntity> userextendEntities);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <returns></returns>
        Task<int> Update(CustomerloandetailEntity entity);

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <returns></returns>
        Task<int> Delete(CustomerloandetailEntity entity);

        /// <summary>
        /// 列表
        /// </summary>
        /// <returns></returns>
        Task<List<CustomerloandetailEntity>> GetList(CustomerloandetailListQueryInput input);


    }
}
